chore(renovate): retire maint-51 in favor of pip-compile lockFileMaintenance - #2413
Conversation
…tenance Renovate's pip-compile manager (enabled on requirements.lock via the canary renovate.json #2411 + fleet preset #2406) already owns periodic lock regeneration: supportsLockFileMaintenance=true and its defaultConfig enables lockFileMaintenance by default (branchTopic `pip-compile-refresh`), recompiling the lock from scratch on a schedule. That makes maint-51-dependency-refresh.yml's scheduled `uv pip compile --upgrade` a duplicate refresher (and it had failed every run since ~March until #2404). Retire it. Verified the feared `--upgrade`-in-header risk does NOT exist: - uv omits `--upgrade` from the recorded lock header (empirically: compiles with and without `--upgrade` produce byte-identical headers). - Even if it appeared, Renovate's pip-compile header parser (common.ts throwForUnknownOption) would throw `Option --upgrade not supported (yet)` and skip the file; it never re-runs a mass `--upgrade` (per-dep bumps are scoped via `--upgrade-package` in artifacts.ts). maint-51's other steps remain covered: sync_test_dependencies.py --verify runs in reusable-10-ci-python on every PR; dev-tool pin alignment is enforced on schedule by maint-auto-update-pypi-versions + maint-sync-env-from-pyproject (--apply). - delete .github/workflows/maint-51-dependency-refresh.yml - drop its EXPECTED_NAMES entry in tests/workflows/test_workflow_naming.py - remove it from docs/ci/WORKFLOWS.md (link guard), WORKFLOW_SYSTEM.md, WORKFLOW_GUIDE.md, DEPENDENCY_TESTING.md; document lockFileMaintenance ownership in renovate.json Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (7)
🔗 Linked repositories identifiedCodeRabbit considers these linked repositories for cross-repo context during reviews:
💤 Files with no reviewable changes (3)
📝 WalkthroughWalkthroughRemoves the ChangesRetire maint-51-dependency-refresh workflow
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Workflow source neededPR #2413 needs either a linked GitHub issue or one valid non-issue Workflow Source before PR metadata automation can manage it safely. Please do one of:
Once a valid source is present, this warning will not be reposted. |
Automated Status SummaryHead SHA: 206e349
Coverage Overview
Coverage Trend
Top Coverage Hotspots (lowest coverage)
Low Coverage Files (<50.0%)
Updated automatically; will refresh on subsequent CI/Docker completions. Keepalive checklistScopeNo scope information available Tasks
Acceptance criteria
|
|
Coordination note from the consumer lock-header rollout (the fleet pip-compile task): this PR edits
Happy to push this as a clean follow-up PR right after this merges if you'd rather not expand the diff — just flagging so we don't leave the redundant block + contradictory CANARY text on main. (Separately: your |
The fleet preset (renovate-presets/fleet.json) has provided the byte-identical
`"pip-compile": {"managerFilePatterns": ["/(^|/)requirements\\.lock$/"]}` block
since #2406, and Workflows extends that preset — so the copy in renovate.json
was dead weight (Renovate merged duplicate manager config to no effect).
Removes the redundant block and refreshes the now-stale description: it still
said "CANARY (do not promote to the fleet preset until proven here)" even though
the manager WAS promoted in #2406. Keeps the lockFileMaintenance / --upgrade
notes from #2413 and the one genuine Workflows-specific override (pip_requirements
disabled for requirements.txt, which is a lock SOURCE here — consumer locks source
pyproject.toml only, which is why that disable is intentionally not in the preset).
Verified: `renovate-config-validator` passes; `renovate --platform=local
--dry-run` still extracts requirements.lock via the preset (depCount 217) with
no error after removal.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…2417) The fleet preset (renovate-presets/fleet.json) has provided the byte-identical `"pip-compile": {"managerFilePatterns": ["/(^|/)requirements\\.lock$/"]}` block since #2406, and Workflows extends that preset — so the copy in renovate.json was dead weight (Renovate merged duplicate manager config to no effect). Removes the redundant block and refreshes the now-stale description: it still said "CANARY (do not promote to the fleet preset until proven here)" even though the manager WAS promoted in #2406. Keeps the lockFileMaintenance / --upgrade notes from #2413 and the one genuine Workflows-specific override (pip_requirements disabled for requirements.txt, which is a lock SOURCE here — consumer locks source pyproject.toml only, which is why that disable is intentionally not in the preset). Verified: `renovate-config-validator` passes; `renovate --platform=local --dry-run` still extracts requirements.lock via the preset (depCount 217) with no error after removal. Co-authored-by: stranske <tim@stranskemo.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
What & why
maint-51-dependency-refresh.ymlranuv pip compile --upgrade ... -o requirements.lockon a schedule (1st & 15th) to refresh the lock. Renovate's pip-compile manager is now enabled onrequirements.lock(canaryrenovate.json#2411 + fleet preset #2406), so this is a duplicate refresher — and maint-51 had been failing every scheduled run since ~March (unsatisfiable pytest pin, fixed in #2404). Retire it in favor of the manager'slockFileMaintenance.Verification of the
--upgrade-in-header concern (the original worry)The follow-up note in #2411 worried that maint-51's
--upgradewould land in the committed lock header and either break Renovate's parser or mis-direct it into a mass upgrade. Both turn out not to be real, verified two ways:uvomits--upgradefrom the lock header. Compiling the exact maint-51 command with and without--upgradeproduces byte-identical headers (uv 0.10.3):--upgradeis a one-time action flag, not part of the reproducible recorded command.lib/modules/manager/pip-compile/common.ts):--upgrade/-Uis not in theuvallowlist, andthrowForUnknownOptionwouldthrow "Option --upgrade not supported (yet)"— i.e. it would skip managing the lock, never silently re-run a mass--upgrade. Per-dep bumps are scoped with--upgrade-package=<dep>==<ver>(artifacts.ts), so a mass upgrade is structurally impossible.So the acute risk is a non-issue; this PR is the cleanup (eliminate the duplicate, long-broken refresher).
Why
lockFileMaintenanceis the right replacementlib/modules/manager/pip-compile/index.ts:The manager enables
lockFileMaintenanceby default (overriding Renovate's globalenabled:false). On schedule it deletes the lock and recompiles from scratch (artifacts.tsisLockFileMaintenancebranch) = the--upgradeequivalent, respecting source pins. No config change is needed — it's already live (weekly, default schedule).maint-51's other steps are covered elsewhere
scripts/sync_test_dependencies.py --verify→ already runs inreusable-10-ci-python.ymlon every PR.sync_tool_versions --check) → enforced on schedule bymaint-auto-update-pypi-versions.yml+maint-sync-env-from-pyproject.yml(--apply); maint-51's--checkwas a redundant defensive assertion.maint-dependabot-auto-lock.yml(renovate-aware).Changes
.github/workflows/maint-51-dependency-refresh.ymlEXPECTED_NAMESentry intests/workflows/test_workflow_naming.pydocs/ci/WORKFLOWS.md(required by the doc-link guard),docs/ci/WORKFLOW_SYSTEM.md,docs/WORKFLOW_GUIDE.md,DEPENDENCY_TESTING.mdrenovate.json(so a scheduled refresher isn't reintroduced)Historical/dated docs (audits, transition plans, dated reviews) are left as point-in-time records.
Tests
tests/workflows/— 685 passed, 3 skipped locally (naming, inventory-parity, and doc-link-resolve guards all green).renovate.jsonvalidates as JSON.Follow-ups (out of scope — fleet promotion, per #2411)
templates/dependency-refresh.yml+ its mention intemplates/consumer-repo/WORKFLOW_USER_GUIDE.mdshould be retired when the pip-compile block is promoted intorenovate-presets/fleet.jsonandmaint-69is updated.🤖 Generated with Claude Code
Summary by CodeRabbit